package cs495.pocketdslr;
import android.content.Context;
import android.content.res.TypedArray;
import android.hardware.camera2.CameraCharacteristics;
import android.util.AttributeSet;
import android.util.Pair;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
/**
* Created by Chris on 3/11/2015.
*/
public class CameraSettingButton extends RotatableButton implements View.OnClickListener {
protected CameraSetting cameraSetting;
protected CameraSettingListener cameraSettingListener;
protected ManualCameraSettings manualCameraSettings;
public CameraSettingButton(Context context) {
super(context);
}
public CameraSettingButton(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray styledAttributes = context.obtainStyledAttributes(attrs, R.styleable.pocketDSLR);
String settingKey = styledAttributes.getString(R.styleable.pocketDSLR_setting);
this.initializeCameraSetting(settingKey);
}
public CameraSettingButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
TypedArray styledAttributes = context.obtainStyledAttributes(attrs, R.styleable.pocketDSLR, defStyleAttr, 0);
String settingKey = styledAttributes.getString(R.styleable.pocketDSLR_setting);
this.initializeCameraSetting(settingKey);
}
private void initializeCameraSetting(String settingKey) {
switch (settingKey) {
case ManualCameraSettings.EXPOSURE_TIME:
this.cameraSetting = CameraSetting.createExposeTimeCameraSetting();
break;
case ManualCameraSettings.ISO:
this.cameraSetting = CameraSetting.createISOCameraSetting();
break;
case ManualCameraSettings.APERTURE_SIZE:
this.cameraSetting = CameraSetting.createApertureCameraSetting();
break;
}
}
public void registerManualCameraSettings(ManualCameraSettings manualCameraSettings, CameraCharacteristics cameraCharacteristics) {
this.manualCameraSettings = manualCameraSettings;
this.manualCameraSettings.registerSetting(this.cameraSetting.getSettingKey(), this.cameraSetting);
this.cameraSetting.setRange(cameraCharacteristics);
int storedValue = this.manualCameraSettings.getKey(this.cameraSetting.getSettingKey());
Pair<Integer, String> settingValue = this.cameraSetting.getSettingValue(storedValue);
this.setText(settingValue.second);
}
public void setOnChangeListener(CameraSettingListener cameraSettingListener) {
this.cameraSettingListener = cameraSettingListener;
this.setOnClickListener(this);
}
public void setCameraSetting(int value) {
Pair<Integer, String> settingValue = this.cameraSetting.translateSettingValue(value);
this.setText(settingValue.second);
this.manualCameraSettings.setKey(this.cameraSetting.getSettingKey(), settingValue.first);
}
public int getCameraSetting() {
int settingValue = this.manualCameraSettings.getKey(this.cameraSetting.getSettingKey());
return this.cameraSetting.reverseTranslatedValue(settingValue);
}
@Override
public void onClick(View v) {
if (this.cameraSettingListener != null){
this.cameraSettingListener.onSettingChange(this);
}
}
}